home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / ffccflow / ffccflow.lha / ffccc+flow / ffccc / POSCH.f < prev    next >
Encoding:
Text File  |  1992-07-31  |  1.2 KB  |  42 lines

  1.       SUBROUTINE POSCH(SFIND,STRING,ICC1,ICC2,HOLFLG,MLEV,KPOS,ILEV)
  2. *-----------------------------------------------------------------------
  3. * positions on a specified character
  4. * input 
  5. * SFIND     character looked for
  6. * STRING    string to be looked up  
  7. * ICC1      first ch. in LSTRNG 
  8. * ICC2      last ch.       -
  9. * HOLFLG    if TRUE, hollerith included 
  10. * MLEV      max. level allowed for character (relative to ICC1...ICC2)  
  11. * output
  12. * KPOS      position of ICOMP in LSTRNG, or 0   
  13. * ILEV      relative level, including KPOS  
  14. *-----------------------------------------------------------------------
  15.       LOGICAL HOLFLG
  16.       CHARACTER STRING*(*),SFIND*1,STEMP*1  
  17.       ILEV=0
  18.       KPOS=0
  19.       JC=ICC1-1 
  20.    10 JC=JC+1   
  21.       IF (JC.GT.ICC2) GOTO 999  
  22.       STEMP=STRING(JC:JC)   
  23.       IF(STEMP.EQ.'(')  THEN
  24.          ILEV=ILEV+1
  25.       ELSEIF(STEMP.EQ.')')  THEN
  26.          ILEV=ILEV-1
  27.       ENDIF 
  28.       IF(STEMP.EQ.SFIND.AND.ILEV.LE.MLEV)  THEN 
  29.          KPOS=JC
  30.          GOTO 999   
  31.       ENDIF 
  32.       IF(STEMP.EQ.'{')  THEN
  33. *--- start of character string  
  34.          IF (.NOT.HOLFLG) THEN  
  35.             I=INDEX(STRING(JC:ICC2),'}')
  36.             IF (I.EQ.0) GOTO 999
  37.             JC=I+JC-1   
  38.          ENDIF  
  39.       ENDIF 
  40.       GOTO 10   
  41.   999 END   
  42.